package com.bckj.fastboot.core.extra.txasync;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 异步事务任务注解
 * 能保证异步任务记录插入成功后执行 重试机制使用的是spring retry
 * 如果一些原因导致异步任务执行停止（如：服务重启）导致任务卡住，可以手动重试
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface TxAsync {

    int UN_DEFINED = -1;

    /**
     * 任务名称
     */
    String taskName() default "";

    String taskIdPrefix() default "";
    /**
     * 初始化间隔时间 默认5s
     */
    long initialInterval() default 5000L;

    /**
     * 超时时间 秒
     */
    long timeout() default UN_DEFINED;

    /**
     * 最大尝试次数
     */
    int maxAttempt() default 3;

    /**
     * 乘数 为0则使用固定间隔时间
     */
    double multiplier() default 0D;
}
